package org.acb.sgp.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.acb.sgp.beans.Episodio;
import org.acb.sgp.beans.EscenaPlanRodaje;
import org.acb.sgp.beans.Estado;
import org.acb.sgp.beans.GuionTecnico;
import org.acb.sgp.beans.Programa;
import org.acb.sgp.service.BusinessLayerService;
import org.acb.sgp.service.impl.BusinessLayerServiceImpl;
import org.acb.sgp.utils.FacesUtil;

@ManagedBean
@ViewScoped
public class PlanRodajeBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private final BusinessLayerService service = new BusinessLayerServiceImpl();
    private Integer codigo;
    private Programa programa;
    private List<Episodio> episodios;
    private Episodio episodio;
    private List<EscenaPlanRodaje> escenas;

    @PostConstruct
    public void init() {
        setPrograma(new Programa());
        setEscenas(new ArrayList<EscenaPlanRodaje>());
    }

    public void seleccionar() {
        setPrograma(service.buscarProgramaPorCodigo(getCodigo()));
    //    episodios = service.buscarEpisodiosPorCodPrograma(codigo);
    }

    public void nuevo() {
        setEpisodio(new Episodio());
    }

    public void registrar() {
        getEpisodio().setPrograma(getPrograma());
        Estado estado = new Estado();
        estado.setCodEstado(1);
        getEpisodio().setEstado(estado);
        service.registrarEpisodio(getEpisodio());
        GuionTecnico guionTecnico = new GuionTecnico();
        guionTecnico.setPrograma(getPrograma());
        guionTecnico.setEpisodio(getEpisodio());
        guionTecnico.setEstado(estado);
        service.registrarGuionTecnico(guionTecnico);
        setEpisodios(service.buscarEpisodiosPorCodPrograma(getCodigo()));
        FacesUtil.showMessage("EPISODIO GUARDADO", FacesUtil.INFO);
        FacesUtil.closeDialog("registrar");
    }

    public void eliminar(Episodio pEpisodio) {
        service.eliminarEpisodio(pEpisodio);
        setEpisodios(service.buscarEpisodiosPorCodPrograma(getCodigo()));
        FacesUtil.showMessage("EPISODIO ELIMINADO", FacesUtil.INFO);
        FacesUtil.closeDialog("eliminar");
    }

    public Programa getPrograma() {
        return programa;
    }

    public void setPrograma(Programa programa) {
        this.programa = programa;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public List<Episodio> getEpisodios() {
        return episodios;
    }

    public void setEpisodios(List<Episodio> episodios) {
        this.episodios = episodios;
    }

    public Episodio getEpisodio() {
        return episodio;
    }

    public void setEpisodio(Episodio episodio) {
        this.episodio = episodio;
    }

    /**
     * @return the escenas
     */
    public List<EscenaPlanRodaje> getEscenas() {
        return escenas;
    }

    /**
     * @param escenas the escenas to set
     */
    public void setEscenas(List<EscenaPlanRodaje> escenas) {
        this.escenas = escenas;
    }


}
